home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / gnu / gnugo1_1.lha / gnugo / findsavr.c < prev    next >
C/C++ Source or Header  |  1989-03-07  |  2KB  |  74 lines

  1. /*
  2.                 GNU GO - the game of Go (Wei-Chi)
  3.                 Version 1.1   last revised 3-1-89
  4.            Copyright (C) Free Software Foundation, Inc.
  5.                       written by Man L. Li
  6.                       modified by Wayne Iba
  7.                     documented by Bob Webber
  8. */
  9. /*
  10. This program is free software; you can redistribute it and/or modify
  11. it under the terms of the GNU General Public License as published by
  12. the Free Software Foundation - version 1.
  13.  
  14. This program is distributed in the hope that it will be useful,
  15. but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17. GNU General Public License in file COPYING for more details.
  18.  
  19. You should have received a copy of the GNU General Public License
  20. along with this program; if not, write to the Free Software
  21. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  22.  
  23. Please report any bug/fix, modification, suggestion to
  24.  
  25. mail address:   Man L. Li
  26.                 Dept. of Computer Science
  27.                 University of Houston
  28.                 4800 Calhoun Road
  29.                 Houston, TX 77004
  30.  
  31. e-mail address: manli@cs.uh.edu         (Internet)
  32.                 coscgbn@uhvax1.bitnet   (BITNET)
  33.                 70070,404               (CompuServe)
  34.  
  35.  
  36.  
  37. */
  38.  
  39. #include <stdio.h>
  40.  
  41. extern unsigned char p[19][19], l[19][19];
  42. extern int mymove;
  43.  
  44. findsaver(i, j, val)
  45. /* find move if any pieces is threaten */
  46. int *i, *j, *val;
  47.   {
  48.    int m, n, minlib;
  49.    int ti, tj, tval;
  50.  
  51.    *i = -1;   *j = -1;     *val = -1;
  52.    for (minlib = 1; minlib < 4; minlib++)
  53.       {
  54. /* count piece with minimum liberty */
  55.        for (m = 0; m < 19; m++)
  56.      for (n = 0; n < 19; n++)
  57.        if ((p[m][n] == mymove) && (l[m][n] == minlib))
  58. /* find move to save pieces */
  59.          {
  60.           initmark();
  61.           if (findnextmove(m, n, &ti, &tj, &tval, minlib) && (tval > *val))
  62.         {
  63.          *val = tval;
  64.          *i = ti;
  65.          *j = tj;
  66.            }
  67.          }
  68.      }
  69.     if (*val > 0)   /* find move */
  70.        return 1;
  71.     else        /* move not found */
  72.        return 0;
  73.  }  /* findsaver */
  74.